/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;


import controladores.ConvenioXPeriodoXEstudianteFacadeLocal;
import entidades.CalificacionDesempeno;
import entidades.ConvenioXPeriodoXEstudiante;
import entidades.Estudiante;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import negocio.CalificacionDesempenoInterface;
import negocio.EstudianteInterface;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class FCalificacionDesempeno implements Formato, Serializable{
    private CalificacionDesempeno calificacionDesempeno = new CalificacionDesempeno();    
    @EJB
    private CalificacionDesempenoInterface calificacionDesempenoInterface;
    private EstudianteInterface estudianteInterface;
    private List<Estudiante> listaEstudiantes;
    private String estudianteSelected;
    @EJB
    private ConvenioXPeriodoXEstudianteFacadeLocal convenioXPeriodoXEstudianteFacadeLocal;
    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    private Estudiante estudiante;
    private int idSupervisor;
    private List<ConvenioXPeriodoXEstudiante> convenioXPeriodoXEstudiantes;
    private String ESTADO_PERIODO = "ACT";
//    private int rol = sessionBean.getUsuarioSession().getIdRol().getIdRol();
//    private final int ID_USUARIO = sessionBean.getUsuarioSession().getIdUsuario();
//    private final int ROL_COORDINADOR = 2;
//    private final int ROL_SUPERVISOR = 3;
//    private final int ROL_SUPERVISOR_ENTIDAD = 4;
//    private final int ROL_PRACTICANTE = 5;
    private boolean renderedBotonGuardar;
    private boolean renderedBotonEditar;
    private boolean renderedBotonImprimir;

    public FCalificacionDesempeno(){
    }
    
    @PostConstruct
    public void InicializarVariables() {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        if (request.getParameter("accionCalificacionDesempeno") != null) {
            String accion = (String) request.getParameter("accionCalificacionDesempeno");
            if (accion.equals("Consultar")) {
                if (request.getParameter("calificacionDesempeno") != null) {
                    calificacionDesempeno = calificacionDesempenoInterface.consultarCalificacionDesempeno(Integer.parseInt(request.getParameter("calificacionDesempeno").toString()));
                    estudiante = calificacionDesempeno.getConvenioXPeriodoXEstudiante().getEstudiante();
                    renderedBotonGuardar = false;
                    renderedBotonEditar = false;
                    renderedBotonImprimir = true;
                }
            } else {
                if (accion.equals("Editar")) {
                    if (request.getParameter("calificacionDesempeno") != null) {
                        calificacionDesempeno = calificacionDesempenoInterface.consultarCalificacionDesempeno(Integer.parseInt(request.getParameter("calificacionDesempeno").toString()));
                        estudiante = calificacionDesempeno.getConvenioXPeriodoXEstudiante().getEstudiante();
                        renderedBotonGuardar = false;
                        renderedBotonEditar = true;
                        renderedBotonImprimir = false;
                    
                }
                } else {
                    if (accion.equals("Nuevo")) {
                        idSupervisor = sessionBean.getUsuarioSession().getIdUsuario();
                        convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudianteFacadeLocal.consultarEstudianteXSupervisorEntidad(idSupervisor, ESTADO_PERIODO);
                        renderedBotonGuardar = true;
                        renderedBotonEditar = false;
                        renderedBotonImprimir = false;
                    }
                }
            }
        }
//        switch(rol){
//            case ROL_COORDINADOR:
//                break;
//            case ROL_SUPERVISOR:
//                break;
//            case ROL_SUPERVISOR_ENTIDAD:
//                break;
//            case ROL_PRACTICANTE:
//                 listaEstudiantes = (List<Estudiante>) estudianteInterface.consultarEstudiante(80739686);   
//                break;
//        }
        
//        try {
//            InitialContext ctx = new InitialContext();
//            estudianteInterface = (EstudianteInterface) ctx.lookup("EstudianteEJB"); 
//            listaEstudiantes = estudianteInterface.listarEstudiantes();
//        } catch (NamingException ex) {
//            Logger.getLogger(FCalificacionDesempeno.class.getName()).log(Level.SEVERE, null, ex);
//        }
            
        // Se quema el supervisor con el objetivo que cuando se haga el login se traiga dinamicamente
//        if (estudianteSelected == 0) {
//            listaEstudiantes.clear();
//            // Linea de la sesion
//            Supervisor s = supervisorJpaController.findSupervisor(3010);
//            listaEstudiantes = s.getEstudianteList();
//
//        }
    }
    
    @Override
    public void ConsultarFormato(){
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.        
    }

    @Override
    public void DiligenciarFormato() {
        try{
            estudiante = new Estudiante(Integer.parseInt(estudianteSelected));
            estudiante.setIdEstudiante(Integer.parseInt(estudianteSelected));
            calificacionDesempeno.setConvenioXPeriodoXEstudiante(convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(Integer.parseInt(estudianteSelected),ESTADO_PERIODO));
            calificacionDesempeno.setIdCalificacionDesempeno(calificacionDesempenoInterface.obtenerMaxId());
            calificacionDesempenoInterface.crear(calificacionDesempeno);
            FacesMessage facesMessage = new FacesMessage("Datos guardados con éxito");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            limpiarCampos();
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
        }
    }

    @Override
    public void AprobarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void EditarFormato() {
        try{
            calificacionDesempenoInterface.editarCalificacionDesempeno(calificacionDesempeno);
            System.out.println("ingresa al metodo");
            FacesMessage facesMessage = new FacesMessage("Datos editados con éxito");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
        }
    }

    private void limpiarCampos(){
        estudianteSelected = "";
        calificacionDesempeno = null;
        
    }
    public CalificacionDesempeno getCalificacionDesempeno() {
        return calificacionDesempeno;
    }

    public void setCalificacionDesempeno(CalificacionDesempeno calificacionDesempeno) {
        this.calificacionDesempeno = calificacionDesempeno;
    }

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }

    public List<Estudiante> getListaEstudiantes() {
        return listaEstudiantes;
    }

    public void setListaEstudiantes(List<Estudiante> listaEstudiantes) {
        this.listaEstudiantes = listaEstudiantes;
    }

    public String getEstudianteSelected() {
        return estudianteSelected;
    }

    public void setEstudianteSelected(String estudianteSelected) {
        this.estudianteSelected = estudianteSelected;
    }

    public List<ConvenioXPeriodoXEstudiante> getConvenioXPeriodoXEstudiantes() {
        return convenioXPeriodoXEstudiantes;
    }

    public void setConvenioXPeriodoXEstudiantes(List<ConvenioXPeriodoXEstudiante> convenioXPeriodoXEstudiantes) {
        this.convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudiantes;
    }

    public boolean isRenderedBotonGuardar() {
        return renderedBotonGuardar;
    }

    public void setRenderedBotonGuardar(boolean renderedBotonGuardar) {
        this.renderedBotonGuardar = renderedBotonGuardar;
    }

    public boolean isRenderedBotonEditar() {
        return renderedBotonEditar;
    }

    public void setRenderedBotonEditar(boolean renderedBotonEditar) {
        this.renderedBotonEditar = renderedBotonEditar;
    }

    public boolean isRenderedBotonImprimir() {
        return renderedBotonImprimir;
    }

    public void setRenderedBotonImprimir(boolean renderedBotonImprimir) {
        this.renderedBotonImprimir = renderedBotonImprimir;
    }

      
        
}
